package com.easy.query.test.entity.proxy;

import com.easy.query.core.expression.parser.core.available.TableAvailable;
import com.easy.query.core.proxy.AbstractProxyEntity;
import com.easy.query.core.proxy.SQLColumn;
import com.easy.query.core.proxy.SQLSelectAsExpression;
import com.easy.query.core.proxy.fetcher.AbstractFetcher;
import com.easy.query.core.proxy.core.EntitySQLContext;
import com.easy.query.test.entity.BlogEntity;
import com.easy.query.core.proxy.columns.SQLStringColumn;
import com.easy.query.core.proxy.columns.SQLNumberColumn;
import com.easy.query.core.proxy.columns.SQLDateTimeColumn;
import com.easy.query.core.proxy.columns.SQLBooleanColumn;
import com.easy.query.core.proxy.columns.SQLNavigateColumn;
import com.easy.query.core.proxy.columns.SQLQueryable;
import com.easy.query.core.proxy.columns.SQLAnyColumn;

/**
 * this file automatically generated by easy-query, don't modify it
 * 当前文件是easy-query自动生成的请不要随意修改
 * 如果出现属性冲突请使用@ProxyProperty进行重命名
 *
 * @author xuejiaming
 */
public class BlogEntityProxy extends AbstractProxyEntity<BlogEntityProxy, BlogEntity> {

    private static final Class<BlogEntity> entityClass = BlogEntity.class;

    public static BlogEntityProxy createTable() {
        return new BlogEntityProxy();
    }

    public BlogEntityProxy() {
    }

    /**
     * 标题
     * {@link BlogEntity#getTitle}
     */
    public SQLStringColumn<BlogEntityProxy, java.lang.String> title() {
        return getStringColumn("title", java.lang.String.class);
    }

    /**
     * 内容
     * {@link BlogEntity#getContent}
     */
    public SQLStringColumn<BlogEntityProxy, java.lang.String> content() {
        return getStringColumn("content", java.lang.String.class);
    }

    /**
     * 博客链接
     * {@link BlogEntity#getUrl}
     */
    public SQLStringColumn<BlogEntityProxy, java.lang.String> url() {
        return getStringColumn("url", java.lang.String.class);
    }

    /**
     * 点赞数
     * {@link BlogEntity#getStar}
     */
    public SQLNumberColumn<BlogEntityProxy, java.lang.Integer> star() {
        return getNumberColumn("star", java.lang.Integer.class);
    }

    /**
     * 发布时间
     * {@link BlogEntity#getPublishTime}
     */
    public SQLDateTimeColumn<BlogEntityProxy, java.time.LocalDateTime> publishTime() {
        return getDateTimeColumn("publishTime", java.time.LocalDateTime.class);
    }

    /**
     * 评分
     * {@link BlogEntity#getScore}
     */
    public SQLNumberColumn<BlogEntityProxy, java.math.BigDecimal> score() {
        return getNumberColumn("score", java.math.BigDecimal.class);
    }

    /**
     * 状态
     * {@link BlogEntity#getStatus}
     */
    public SQLNumberColumn<BlogEntityProxy, java.lang.Integer> status() {
        return getNumberColumn("status", java.lang.Integer.class);
    }

    /**
     * 排序
     * {@link BlogEntity#getOrder}
     */
    public SQLNumberColumn<BlogEntityProxy, java.math.BigDecimal> order() {
        return getNumberColumn("order", java.math.BigDecimal.class);
    }

    /**
     * 是否置顶
     * {@link BlogEntity#getIsTop}
     */
    public SQLBooleanColumn<BlogEntityProxy, java.lang.Boolean> isTop() {
        return getBooleanColumn("isTop", java.lang.Boolean.class);
    }

    /**
     * 是否置顶
     * {@link BlogEntity#getTop}
     */
    public SQLBooleanColumn<BlogEntityProxy, java.lang.Boolean> top() {
        return getBooleanColumn("top", java.lang.Boolean.class);
    }

    /**
     * {@link BlogEntity#getUsers}
     */
    public SQLQueryable<com.easy.query.test.entity.proxy.SysUserProxy, com.easy.query.test.entity.SysUser> users() {
        return getNavigates("users", new com.easy.query.test.entity.proxy.SysUserProxy());
    }

    /**
     * {@link BlogEntity#getId}
     */
    public SQLStringColumn<BlogEntityProxy, java.lang.String> id() {
        return getStringColumn("id", java.lang.String.class);
    }

    /**
     * 创建时间;创建时间
     * {@link BlogEntity#getCreateTime}
     */
    public SQLDateTimeColumn<BlogEntityProxy, java.time.LocalDateTime> createTime() {
        return getDateTimeColumn("createTime", java.time.LocalDateTime.class);
    }

    /**
     * 修改时间;修改时间
     * {@link BlogEntity#getUpdateTime}
     */
    public SQLDateTimeColumn<BlogEntityProxy, java.time.LocalDateTime> updateTime() {
        return getDateTimeColumn("updateTime", java.time.LocalDateTime.class);
    }

    /**
     * 创建人;创建人
     * {@link BlogEntity#getCreateBy}
     */
    public SQLStringColumn<BlogEntityProxy, java.lang.String> createBy() {
        return getStringColumn("createBy", java.lang.String.class);
    }

    /**
     * 修改人;修改人
     * {@link BlogEntity#getUpdateBy}
     */
    public SQLStringColumn<BlogEntityProxy, java.lang.String> updateBy() {
        return getStringColumn("updateBy", java.lang.String.class);
    }

    /**
     * 是否删除;是否删除
     * {@link BlogEntity#getDeleted}
     */
    public SQLBooleanColumn<BlogEntityProxy, java.lang.Boolean> deleted() {
        return getBooleanColumn("deleted", java.lang.Boolean.class);
    }


    @Override
    public Class<BlogEntity> getEntityClass() {
        return entityClass;
    }


    /**
     * 数据库列的简单获取
     *
     * @return
     */
    public BlogEntityProxyFetcher FETCHER = new BlogEntityProxyFetcher(this, null, SQLSelectAsExpression.empty);


    public static class BlogEntityProxyFetcher extends AbstractFetcher<BlogEntityProxy, BlogEntity, BlogEntityProxyFetcher> {

        public BlogEntityProxyFetcher(BlogEntityProxy proxy, BlogEntityProxyFetcher prev, SQLSelectAsExpression sqlSelectAsExpression) {
            super(proxy, prev, sqlSelectAsExpression);
        }


        /**
         * 标题
         * {@link BlogEntity#getTitle}
         */
        public BlogEntityProxyFetcher title() {
            return add(getProxy().title());
        }

        /**
         * 内容
         * {@link BlogEntity#getContent}
         */
        public BlogEntityProxyFetcher content() {
            return add(getProxy().content());
        }

        /**
         * 博客链接
         * {@link BlogEntity#getUrl}
         */
        public BlogEntityProxyFetcher url() {
            return add(getProxy().url());
        }

        /**
         * 点赞数
         * {@link BlogEntity#getStar}
         */
        public BlogEntityProxyFetcher star() {
            return add(getProxy().star());
        }

        /**
         * 发布时间
         * {@link BlogEntity#getPublishTime}
         */
        public BlogEntityProxyFetcher publishTime() {
            return add(getProxy().publishTime());
        }

        /**
         * 评分
         * {@link BlogEntity#getScore}
         */
        public BlogEntityProxyFetcher score() {
            return add(getProxy().score());
        }

        /**
         * 状态
         * {@link BlogEntity#getStatus}
         */
        public BlogEntityProxyFetcher status() {
            return add(getProxy().status());
        }

        /**
         * 排序
         * {@link BlogEntity#getOrder}
         */
        public BlogEntityProxyFetcher order() {
            return add(getProxy().order());
        }

        /**
         * 是否置顶
         * {@link BlogEntity#getIsTop}
         */
        public BlogEntityProxyFetcher isTop() {
            return add(getProxy().isTop());
        }

        /**
         * 是否置顶
         * {@link BlogEntity#getTop}
         */
        public BlogEntityProxyFetcher top() {
            return add(getProxy().top());
        }

        /**
         * {@link BlogEntity#getId}
         */
        public BlogEntityProxyFetcher id() {
            return add(getProxy().id());
        }

        /**
         * 创建时间;创建时间
         * {@link BlogEntity#getCreateTime}
         */
        public BlogEntityProxyFetcher createTime() {
            return add(getProxy().createTime());
        }

        /**
         * 修改时间;修改时间
         * {@link BlogEntity#getUpdateTime}
         */
        public BlogEntityProxyFetcher updateTime() {
            return add(getProxy().updateTime());
        }

        /**
         * 创建人;创建人
         * {@link BlogEntity#getCreateBy}
         */
        public BlogEntityProxyFetcher createBy() {
            return add(getProxy().createBy());
        }

        /**
         * 修改人;修改人
         * {@link BlogEntity#getUpdateBy}
         */
        public BlogEntityProxyFetcher updateBy() {
            return add(getProxy().updateBy());
        }

        /**
         * 是否删除;是否删除
         * {@link BlogEntity#getDeleted}
         */
        public BlogEntityProxyFetcher deleted() {
            return add(getProxy().deleted());
        }


        @Override
        protected BlogEntityProxyFetcher createFetcher(BlogEntityProxy cp, AbstractFetcher<BlogEntityProxy, BlogEntity, BlogEntityProxyFetcher> prev, SQLSelectAsExpression sqlSelectExpression) {
            return new BlogEntityProxyFetcher(cp, this, sqlSelectExpression);
        }
    }

}
